home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-20 / intronos.zip / INTRONOS.TXT < prev    next >
Text File  |  1992-04-08  |  59KB  |  1,309 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10. Getting Started with TCP/IP on Packet Radio
  11.  
  12.  
  13. by John Ackermann, AG9V
  14. Miami Valley FM Association
  15. Dayton, Ohio
  16.  
  17.  
  18.  
  19.  
  20.  
  21. 8 April 1992
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28. Copyright 1992 by John R. Ackermann, Jr.
  29. This document may be freely copied and distributed for non-commercial
  30. use only, provided this copyright notice is included.  You may modify
  31. this document but you must retain this copyright notice and include an
  32. additional notice identifying you as the creator of the modifications.
  33. You must also send a copy of the modified version to me at the address
  34. shown below.
  35.  
  36. (This is the generic ASCII text version.  Any volunteers to help clean
  37. it up and make it pretty?) 
  38. 
  39. Introduction
  40.  
  41. This document is intended to help hams with some experience in packet 
  42. radio get started with the TCP/IP software written by KA9Q and others.  
  43. It is not intended to take the place of the software's reference 
  44. manual, but rather to provide a quick-and-dirty introduction to the 
  45. capabilities of TCP/IP and the mysteries of installing and using the 
  46. software.
  47.  
  48. There are several different versions of the KA9Q software floating 
  49. around.  It was originally written for MS-DOS computers, but has been 
  50. ported to Macintosh, Amiga, Atari and UNIX systems.  The original 
  51. program was called NET and its last formal version was issued in 
  52. April, 1989.  If someone talks about 890421.1 NET, that's what they're 
  53. referring to.
  54.  
  55. Since 1989, work has concentrated on a rewritten program called NOS 
  56. (for Network Operating System).  NOS offers many new features that 
  57. make using TCP/IP much more effective.  However, it is a growing and 
  58. changing creature, and keeping up with it is difficult.  We recommend 
  59. that you use NOS instead of NET, but we can't tell you precisely where 
  60. to find the latest version.  Your best bet is to check with a local 
  61. user.  If you can't find a copy locally, there are several telephone 
  62. BBS systems that carry the software, but be prepared to find a 
  63. bewildering array of versions and flavors:
  64.  
  65.     N8EMR's Ham BBS        (614) 895-2553
  66.     ChowdaNet        (401) 331-0334
  67.     WB3FFV            (301) 335-0858
  68.  
  69. This document is based on the MS-DOS version of NOS, specifically the 
  70. PA0GRI adaptation of the June 18, 1991 version of NOS as modified and 
  71. distributed by N1BEE (what a mouthful!) and available as grinos from 
  72. the ChowdaNet BBS.  The discussion tries to stay away from features 
  73. that are specific to that version, but if something we say doesn't 
  74. seem to make sense with your version of the software, that's probably 
  75. why.
  76.  
  77. A last note before we plunge in -- we said it before, and we'll say it 
  78. again:  this document barely scratches the surface of NOS.  Nearly 
  79. every command described here has options or parameters that we're 
  80. ignoring.  Our goal is to give you a feel for what TCP/IP does, and to 
  81. get you on the air with NOS; to get beyond the novice stage you need 
  82. to look at the reference manual and experiment with the software.  
  83. Appendix A includes a list of organizations and individuals that can 
  84. provide further information about TCP/IP and amateur radio.
  85.  
  86. 
  87. TCP/IP and Ham Radio
  88.  
  89. TCP/IP is a set of communication protocols that have become a standard 
  90. in the computer networking world.  It is designed to link different 
  91. kinds of computer systems together over dissimilar networks.  TCP/IP 
  92. software runs on nearly every kind of computer available, from IBM 
  93. mainframes to PCs, Macs, Amigas, and Ataris.  The KA9Q software (from 
  94. now on, we'll call it NOS) is special because it includes the features 
  95. necessary to run TCP/IP over ham packet radio.
  96.  
  97. The TCP/IP protocol suite allows different kinds of computers to talk 
  98. to one another across networks.  The services it provides include 
  99. terminal sessions, file transfer, electronic mail, and data routing 
  100. services.  Computers running TCP/IP (referred to as hosts) can run 
  101. some or all of these applications simultaneously; it's entirely 
  102. possible to sit at a PC computer running NOS and carry on a keyboard-
  103. to-keyboard chat with one station, while another retrieves a file from 
  104. your hard disk and you send electronic mail to a third.
  105.  
  106. It's also comforting to know that when you run TCP/IP, you don't give 
  107. up the ability to carry on normal packet communications.  You can use 
  108. NOS just like a terminal program to establish connections with your 
  109. local BBS, etc.
  110.  
  111. If you've looked at the size of the NOS documentation, you're probably 
  112. asking yourself what the benefit is of mastering this fairly complex 
  113. stuff.  Well, NOS has several features that improve on regular packet 
  114. radio.  It has much more sophisticated file transfer and electronic 
  115. mail capabilities than our present PBBS systems (and it's possible to 
  116. feed PBBS messages into NOS in a way that makes it much easier to use 
  117. them).  It supports multiple simultaneous connections.  It has new and 
  118. better methods of dealing with slow and congested channels that 
  119. improve the reliability and throughput of packet traffic.
  120.  
  121. NOS also has the ability to route transmissions to distant stations 
  122. without the user needing to know every hop along the way; all you need 
  123. to do is get your data to a gateway station that knows how to move it 
  124. one hop closer to its destination.  New work being done with NOS 
  125. promises dynamic routing that automatically adjusts to changes in the 
  126. network.
  127.  
  128. And, since it is directly adapted from the de facto standard system of 
  129. interconnecting computers, it offers the possibility of sophisticated 
  130. services far beyond anything available on regular packet radio.  For 
  131. example, in some areas ham TCP/IP users can log into multi-user Unix 
  132. computer systems and run applications as if they were directly 
  133. connected to those machines.
  134.  
  135. 
  136. What is TCP/IP? 
  137.  
  138. As mentioned above, TCP/IP is actually a set of protocols for the 
  139. transfer of data across networks of computers.  Two of these protocols 
  140. underlie most of the others, and they give the set its popular name:
  141.  
  142. TCP    Transport Control Protocol, a "reliable stream service" (which 
  143. is a fancy way of saying it makes sure that all the data sent 
  144. to a remote host actually gets there).
  145.  
  146. IP    Internet Protocol, which sets the basic rules for formatting 
  147. packets of data to go out over a network.  TCP rides on top of 
  148. IP.
  149.  
  150. Now that you finally know what TCP/IP stands for, there are a few 
  151. concepts that are critical because they address the basic problem of 
  152. any communications system -- identifying the parties to the 
  153. conversation.  Simply using our ham callsigns to address TCP/IP 
  154. packets doesn't work for two reasons.  First, the protocols work 
  155. across many different networks, and have to have a consistent address 
  156. scheme.  Second, and as important, ham callsigns don't contain enough 
  157. information to allow TCP/IP's sophisticated routing mechanisms to 
  158. work.
  159.  
  160.  
  161. Names and Addresses
  162.  
  163. The first important concept is the IP Address.  Since these protocols 
  164. are used on lots of different computers, it was necessary to come up 
  165. with an addressing system that works with all of them, that provides 
  166. enough routing information, and that doesn't take up a lot of space.  
  167. The answer is to build TCP/IP addresses out of a four byte sequence, 
  168. with each byte providing information about the network an 
  169. subnetwork(s) to which a host belongs.
  170.  
  171. TCP/IP addresses are called hierarchical because the four bytes have 
  172. decreasing significance from left to right.  By looking at the 
  173. leftmost byte(s) we can learn how to route a transmission to the host 
  174. represented by the rightmost byte(s).  We usually print these 
  175. addresses using the numeric value of each byte, separated by a period, 
  176. such as [44.70.12.34].  This is known as "dotted notation."  The 
  177. square brackets aren't strictly necessary, but they are convenient to 
  178. set off ip addresses; we'll use them in all our references.
  179.  
  180. We won't go into all the semantics of hierarchical addressing here, 
  181. but as an example the address [44.70.12.34] breaks down as:
  182.  
  183.     44.    The network assigned to amateur radio TCP/IP.
  184.     70.    The subnetwork for Ohio.
  185.     12.    The Dayton/Cincinnati area.
  186.     34    A specific system address within that area.
  187.  
  188. IP addresses are assigned by coordinators who derive their authority 
  189. from a central registry.  The central coordinator for the ham radio net 
  190. (44.xx.xx.xx) is Brian Kantor, WB6CYT.  He has delegated authority to 
  191. assign addresses to various state and national coordinators.  The 
  192. folks in Appendix A can help you find your local coordinator.
  193. 
  194. The second important concept is the hostname.  Obviously, ip addresses 
  195. aren't very intuitive.  English-like hostnames make remembering 
  196. addresses much easier, and TCP/IP programs, including NOS, have means 
  197. (discussed below) to map between ip addresses and hostnames.  A host 
  198. is any computer running TCP/IP; even when you're using services from 
  199. another computer, your system is still a host.  When we talk about a 
  200. remote host, we're talking about a machine that you're communicating 
  201. with via TCP/IP.
  202.  
  203. The convention in ham radio TCP/IP is to use your callsign as your 
  204. hostname.  To help reduce confusion, we usually print hostnames in 
  205. lower case, and callsigns in capital letters -- my hostname is ag9v, 
  206. and my call is AG9V (though NOS isn't case sensitive and won't care if 
  207. you don't do it this way).
  208.  
  209. Closely related to the hostname is the domain name.  A domain is a 
  210. group of machines that are logically (though not necessarily 
  211. physically) connected together.  Domain names are like ip addresses; 
  212. periods separate parts of the name, with each part representing a 
  213. different level in the domain hierarchy.  But the domain name is 
  214. ordered in reverse -- its highest-level portion is at the right, the 
  215. opposite of ip addresses.
  216.  
  217. The ham network's domain is ampr.org; org (short for "organizations") 
  218. is the top level domain, and ampr is the second level domain, 
  219. containing all ham TCP/IP hosts.
  220.  
  221. When you combine a hostname with a domain name, you get something like 
  222. ag9v.ampr.org.  This is called a Fully Qualified Domain Name (FQDN -- 
  223. knowing this acronym allows you to sound like a real expert).  If a 
  224. host has multiple users, we can add the user's login name at the 
  225. beginning of the address, separated from the FQDN by a "@" character.  
  226. This combination is commonly known as an Internet address (the 
  227. "Internet" is the general term for all the TCP/IP hosts that are 
  228. interconnected in the commercial, educational, and military domains) 
  229. and is the address form used for most electronic mail in the real 
  230. world.  For example, if there is a user "jra" at ag9v, 
  231. jra@ag9v.ampr.org would be that user's full Internet address.
  232.  
  233. There's one last twist.  Some services (such as Domain Name Service, 
  234. discussed below) need to know whether an address they are processing 
  235. is in fact an FQDN.  To do so, they look for a trailing period at the 
  236. end of the domain name.  Some versions of NOS ignore this issue, but 
  237. the PA0GRI versions (such as grinos) insist that you "anchor" all 
  238. domain names with a period at the end of the name.  In other words, 
  239. grinos will barf if you issue the command "hostname ag9v.ampr.org" but 
  240. "hostname ag9v.ampr.org." will make it happy.
  241.  
  242. This may seem like an overly complicated scheme to simply allow two 
  243. hams to talk to each other, but we use it because the ham radio TCP/IP 
  244. network can be tied to the worldwide TCP/IP network in a number of 
  245. different ways, and using the full set of TCP/IP address conventions 
  246. makes it possible for traffic to flow between the ham network and the 
  247. real world.
  248.  
  249. Leaving aside legal issues about third-party traffic, there's no 
  250. reason, for example, why electronic mail can't be automatically routed 
  251. through a gateway (a computer that interconnects two or more networks) 
  252. 
  253. between a ham TCP/IP user and a non-ham who has access to the 
  254. Internet.  In fact, this service already exists in some areas.
  255.  
  256. The good news is that for traffic within the ham network, we only need 
  257. to worry about hostnames, and NOS's domain suffix command will take 
  258. care of adding the "ampr.org" extension for us; only if we want to go 
  259. across networks do we need to worry about the full details of 
  260. addressing.
  261.  
  262.  
  263. TCP/IP Services
  264.  
  265. Now that we have those boring basics out of the way, the protocols 
  266. that use TCP/IP to provide real, useful services include:
  267.  
  268. TELNET    The terminal emulation program.  In "real" networks, telnet 
  269. lets a user at one host remotely access a remote host, just as 
  270. if he was on a terminal directly connected to that computer.  
  271. In NOS, the telnet function usually connects you to a remote 
  272. host's mailbox, which acts very much like a personal PBBS.  
  273. The NOS telnet command does allow you to remotely login to a 
  274. host that supports that function; in some areas Unix computers 
  275. connected to the ham TCP/IP network provide that service.
  276.  
  277. FTP    File Transfer Protocol.  A means of transferring both ASCII 
  278. (text) and binary (program, data, or compressed) files between 
  279. hosts.
  280.  
  281. SMTP    Simple Mail Transfer Protocol.  A (mostly) invisible way of 
  282. moving electronic mail from one host to another.  If you 
  283. create a message on your computer (using the BM program, 
  284. discussed below), SMTP will automatically attempt to transfer 
  285. it to the destination computer.
  286.  
  287. POP    Post Office Protocol.  SMTP is neat, but it's really designed 
  288. to work with hosts that are available full time.  Most ham 
  289. TCP/IP stations aren't.  POP is designed for them; it allows 
  290. incoming mail to be stored at a host that acts as a mail 
  291. server; when you come on the air, your system automatically 
  292. asks the server to send you your mail.
  293.  
  294. PING    Packet InterNet Groper.  A diagnostic that sends a packet to a 
  295. specified host; if the host is accessible to you and on the 
  296. air, it responds with another packet.  PING tells you how long 
  297. the round trip took.
  298.  
  299. FINGER    A way of finding out information about the users at a host.  
  300. The finger command can simply list all the users at a host, or 
  301. spit out information (like the "brag tape" of RTTY days) about 
  302. a specific user.
  303.  
  304. ARP    Address Resolution Protocol.  IP addresses need to be matched 
  305. with the correct hardware address (in our case, ham callsign) 
  306. to allow packets to be sent to their destination -- NOS 
  307. doesn't know what callsign goes with a given ip address.  ARP 
  308. does this by sending out a broadcast message when it needs to 
  309. know the callsign that matches an address.  The remote host 
  310. (if it's on the air) will answer and provide its hardware 
  311. address.
  312. 
  313. DNS    Domain Name Service.  Remembering IP addresses isn't easy.  
  314. NOS can use a file called domain.txt to contain mappings 
  315. between hostnames and IP addresses, but that means you need to 
  316. know the hostname and address of any station you want to 
  317. contact.  Alternatively, a remote host may agree to serve as a 
  318. domain name server that NOS can query when it needs to know 
  319. the address of a host.  Not all areas have a name server 
  320. available to the ham community, but in those that do, life is 
  321. a lot easier.
  322.  
  323.  
  324. Installing NOS
  325.  
  326. Frankly, there's no completely painless way to get NOS running on your 
  327. computer.  NOS is somewhat picky about the directories used for its 
  328. files, and there are a number of custom parameters that you must set 
  329. to teach the program about your environment and your network.  Those 
  330. parameters are contained in a configuration file that most versions of 
  331. NOS call autoexec.net (PA0GRI versions call it autoexec.nos; our 
  332. references to "autoexec.net" mean either variety).
  333.  
  334.  
  335. Files and Directories
  336.  
  337. You should create the following directories on your disk (NOS can work 
  338. from either a hard disk or a floppy; it's getting big enough, though, 
  339. that working from a 360K floppy can be tough):
  340.  
  341. /spool                (holds NOS' working files)
  342.     /spool/help        (help files for the mbox)
  343.     /spool/mail        (mail messages go here)
  344.     /spool/mqueue        (mail workfiles)
  345.     /spool/rqueue        (incoming mail workfiles)
  346. /finger                (home for finger info files)
  347. /public                (file uploads/downloads)
  348.  
  349. Three files need to go in the root directory of your default disk:
  350.  
  351. autoexec.net            (the NOS configuration file))
  352. ftpusers            (user ftp/mbox access)
  353. domain.txt            (hostnames if not using DNS)
  354. bm.rc                (mail program configuration)
  355. alias                (used by smtp and bm)
  356.  
  357. NOS uses two executable files.  These can be installed anywhere on 
  358. your file path:
  359.  
  360. nos.exe (grinos.exe)        (main executable file)
  361. bm.exe                (mailer program)
  362.  
  363.  
  364. Setting up AUTOEXEC.NET
  365.  
  366. Once the directories are created and the files copied, you need to 
  367. edit the autoexec.net file with a text editor to customize it.  A 
  368. sample file is included as Appendix B.  Some of the things you'll have 
  369. to put in the file are:
  370. 
  371. *    Your hostname (usually your callsign in lower case):
  372.     hostname ag9v.ampr.org.
  373.  
  374. *    Your IP address:  ip address [44.70.12.34]
  375.  
  376. *    Your callsign (optionally including an SSID; local customs 
  377. vary on this):  ax25 mycall AG9V
  378.  
  379. *    "attach" commands to tell NOS how to talk to your hardware.  
  380. These can get quite hairy; Appendix C has the details.  For a 
  381. TNC on COM 1 at 4800 baud, use:  attach asy 0x3f8 4 ax25 ax0 
  382. 1024 256 4800
  383.  
  384. The "ax0" in the middle of the command is the interface name -
  385. - you use it to identify this port to NOS when you set up 
  386. routing commands and the like.  You can use any (short) name 
  387. you'd like, but the convention for COM ports is to use ax0, 
  388. ax1, etc.
  389.  
  390. *    At least one routing command.  NOS needs to know where to send 
  391. packets.  A default route that sends all packets out the ax0 
  392. interface is:  route add default ax0
  393.  
  394. *    If you have a gateway for packets going outside the local 
  395. area, include a route like:  route add [44.70.13.0]/24 ax0 
  396. ag9v
  397.  
  398. This command would route packets addressed to any host with 
  399. "44.70.13" as the first three bytes of its address out the ax0 
  400. interface to ag9v, which presumably knows how to get these 
  401. packets to their destination.  The "/24" means that the first 
  402. 24 bits (three bytes) of the address are significant; NOS will 
  403. ignore the last byte when making routing decisions.
  404.  
  405. *    If you have a domain name server, add a command near the 
  406. beginning of your configuration file identifying its IP 
  407. address:  domain addserver [44.70.12.34]
  408.  
  409. *    If you have a local mail server that knows how to route 
  410. messages outside the area (see the discussion of electronic 
  411. mail, below), add a command identifying it:  smtp gateway 
  412. [44.70.12.34]
  413.  
  414.  
  415. Storing Name/Address Matches in DOMAIN.TXT
  416.  
  417. If you don't have a local domain name server (DNS), you'll need to 
  418. create domain.txt in the root directory, with one entry for every 
  419. hostname you want to communicate with.  Appendix D shows how to set up 
  420. this file.  If you don't have an entry for a host in the file (or the 
  421. name server doesn't know about it), you can use the ip address instead 
  422. of the hostname in NOS commands.
  423.  
  424. If you're using DNS, NOS will save the hostname/address matches it 
  425. gets from the server in domain.txt, so you'll find that file existing 
  426. (and growing) even if you didn't create it.
  427. 
  428. Giving the Finger
  429.  
  430. If you want users to be able to learn about your station with the 
  431. finger command, you need to create a text file in the /finger 
  432. directory called <hostname>.txt (by the way, when we use angle 
  433. brackets, it means this is a value you'll need to insert yourself
  434. -- minus the angles -- based on your own configuration).  You can
  435. use any text editor to create the file; it should contain basic info 
  436. about your system.  Don't go overboard... one screen of text is plenty.
  437.  
  438. You can also create additional files with information about specific 
  439. aspects of your system.  For example, you might have a list of the 
  440. files available for downloading on your system in a finger file called 
  441. "filelist.txt."  A remote host who issues the command finger 
  442. filelist@<myhost> will get that list.
  443.  
  444.  
  445. Some Boring but Necessary Technical Stuff
  446.  
  447. Before we move on to the good stuff about how to make NOS do magic, we 
  448. need to talk about three related commands that you may need to tweak 
  449. depending on local custom and the quality of the rf paths you're 
  450. using.  Just as regular AX.25 uses the paclen command to limit the 
  451. size of packets, TCP/IP has parameters defining how much data is moved 
  452. in one chunk.  In theory, the larger the datagram (TCP/IP's term for a 
  453. single block of data), the higher the efficiency, because the protocol 
  454. headers add a fixed amount of overhead; in larger datagrams the 
  455. overhead is a smaller percentage of the total data sent.
  456.  
  457. However, some networks (such as NetRom) can't handle large datagrams 
  458. in one piece.  More importantly, the larger the datagram, the longer 
  459. it takes to transmit, and on a busy or flaky path, the greater the 
  460. likelihood that something will corrupt it along the way.  And, it
  461. takes longer to resend a large packet than a small one.  Because of
  462. these factors, a fast network with clear channels and solid paths can
  463. get away with sending much larger datagrams than a slow, unreliable one.
  464.  
  465. NOS provides three parameters that deal with datagram sizes.  The most 
  466. important one is the mtu (the sixth value in the attach asy command 
  467. described above).  It is similar to paclen; it sets the largest 
  468. packet, including any headers, that can be sent on an interface.  
  469. Datagrams larger than the mtu are fragmented into multiple pieces, 
  470. which seriously reduces efficiency.  Each interface has its own mtu, 
  471. set as part of its attach command.
  472.  
  473. For 1200 baud channels that are shared with other packet users, an mtu 
  474. value of 256 is reasonable; in fact, since that is the largest packet 
  475. size most non-TCP/IP ham networks (like digipeaters and NetRom) are 
  476. designed to handle, 256 is the largest mtu you should specify if any 
  477. of your packets are going to move over such a node.
  478.  
  479. Faster networks may use higher values.  For good-quality channels with 
  480. fast data rates (9600 baud or above), it may be reasonable to use an 
  481. mtu ranging from 512 to 1500 (which matches the standard mtu used by 
  482. ethernet systems).
  483. 
  484. The other two parameters that set datagram size are part of the TCP 
  485. protocol.  tcp mss is the largest segment (yet another term that means 
  486. almost, but not quite, the same thing as "packet") that TCP will 
  487. assemble for transmission.  Because the TCP and IP headers attached to 
  488. each datagram total 40 bytes, mss should be 40 bytes smaller than mtu; 
  489. 216 is the correct value for an mtu of 256.
  490.  
  491. The tcp window parameter tells NOS how many datagrams it can have 
  492. outstanding at once -- if it is twice the value of mss, NOS can 
  493. receive two datagrams before sending an acknowledgement.  This 
  494. parameter is analogous to the maxframe parameter in AX.25.
  495.  
  496. Although using a large window has major benefits on full duplex
  497. networks, on typical ham networks best performance comes from smaller
  498. windows ranging from one to three times the mss.  A good starting
  499. point is to set the window equal to twice the value of mss (432 for
  500. an mss of 216). 
  501.  
  502. In summary, good starting points for these values are:
  503.  
  504. 1200 baud, shared channel -- mtu 256, tcp mss 216, tcp window 432
  505. High speed, clear channel -- mtu 1500, tcp mss 1460, tcp window 2920
  506.  
  507. It's very important that local users all agree on these values --
  508. particularly the mtu and mss.  Mismatched sizes will result in
  509. fragmented packets and a decrease in throughput. 
  510.  
  511. Even more than in other parts of this manual, this discussion glosses 
  512. over lots of subtleties.  Throughput can be drastically affected by 
  513. tuning these values, and both experimentation and local consensus are 
  514. necessary to come up with settings that both work and don't stomp on 
  515. other users of the channel.
  516. 
  517. Using NOS
  518.  
  519. To run NOS, first make sure you have your TNC configured for KISS mode 
  520. (see Appendix F for details) and turned on.  Then, type nos (or grinos 
  521. for the PA0GRI version).  In a few seconds, you should see a net> 
  522. prompt.  Any error messages that appear first probably indicate a 
  523. problem with your autoexec.net file.
  524.  
  525. When you see the prompt, NOS is in command mode.  When you are 
  526. communicating with another host, NOS is in converse mode.  To return 
  527. to command mode from converse mode, press the F10 function key 
  528. (sometimes called the escape key).  All commands typed at the NOS 
  529. prompt need to be followed by the return key.
  530.  
  531. Typing ? in command mode will display a list of commands.  Typing a 
  532. command name followed by ? will display the valid subcommands.  You 
  533. can't really call it a help system, but it's better than nothing.
  534.  
  535. Some commands can be abbreviated to save typing; the degree of 
  536. abbreviation allowed depends on the command set of the NOS version 
  537. you're using.  Experimentation is the best way to see what works and 
  538. what doesn't.  One minor annoyance in grinos is that commands are case 
  539. sensitive -- "c ax0 n8acv" is fine,  but "C ax0 n8acv" isn't.  It's 
  540. safest to do all your NOS keyboarding in lower case -- apart from case 
  541. sensitive commands, in the email world, typing in capital letters is 
  542. considered shouting!
  543.  
  544. You can issue several commands from within NOS to deal with files and 
  545. directories.  pwd displays your current working directory, and cd 
  546. allows you to change directories.  dir displays files in the current 
  547. directory.  mkdir <dirname> creates a new directory, and rmdir 
  548. <dirname> removes one.  delete <filename> erases a file.  
  549.  
  550. You can also "shell out" to DOS from within NOS by entering either an 
  551. exclamation mark (!) or the command shell.  To return to NOS, type 
  552. exit at the DOS prompt.
  553.  
  554. From command mode, you can start a number of different types of 
  555. sessions to communicate with remote hosts.  Each session has its own 
  556. display screen and you can switch between a session and command mode, 
  557. or between sessions.  The se command displays the active sessions with 
  558. identifying numbers.  To switch to a session, you can type se <session 
  559. number>.  From command mode, you can return to the current (most 
  560. recently displayed) session by entering a carriage return.
  561.  
  562. You can capture incoming data from the current session to a disk file 
  563. by using the record <filename> command, and you can read in a data 
  564. file from disk with the upload <filename> command.
  565.  
  566. The most common NOS session types are probably telnet, its cousin 
  567. ttylink, ftp, and a regular packet connect (technically called an ax25 
  568. session).  Telnet is used to "login" to a remote host, ttylink is a 
  569. kind of telnet specially designed for keyboard-to-keyboard 
  570. communications, ftp handles file transfers, and ax25 sessions allow 
  571. you to carry on normal packet activity.  We'll talk about ax25 
  572. sessions first, since they give you a chance to test your setup 
  573. without having another TCP/IP station on the air.
  574. 
  575. AX.25 Mode
  576.  
  577. The connect command simply lets you do normal packet radio stuff.  
  578. Establishing an ax25 connect through NOS is just like using the 
  579. standard TNC commands with a few small differences.  First, since NOS 
  580. can support several interfaces, each with its own hardware, you need 
  581. to tell NOS which one to use.
  582.  
  583. So, to connect to N8ACV on interface ax0, enter connect ax0 N8ACV.  
  584. Once you get a Connected message, you'll be able to type to the 
  585. station at the other end just as you would with normal packet.  To 
  586. disconnect, press F10 to go back to command mode and type disconnect 
  587. at the prompt.  (Just as with a TNC, these commands can be 
  588. abbreviated; just how few of the letters are necessary will depend on 
  589. each implementation of NOS and the commands it supports).
  590.  
  591. The other minor difference between the NOS connect command and a 
  592. regular TNC is that the word via is not used when specifying 
  593. digipeaters.  To connect to N8ACV through N8KZA on interface ax0, you 
  594. would enter connect ax0 N8ACV N8KZA.
  595.  
  596.  
  597. Telnet
  598.  
  599. The telnet command logs you in to a remote TCP/IP host; depending on 
  600. the capabilities of that host, you might find yourself chatting 
  601. directly with the user at the other end, connecting to the NOS 
  602. mailbox, mbox (which acts very much like a sophisticated personal 
  603. PBBS), or getting a Unix "login:" prompt.  To establish a telnet 
  604. session, enter telnet <hostname> at the command prompt.  To close a 
  605. session, press F10 to return to command and enter close <session 
  606. number>.  If there's only one session open, you can just enter close.  
  607. You can also end the session by issuing the appropriate exit or quit 
  608. command at the remote host's prompt.
  609.  
  610. Some versions of NOS offer a new type of session that improves on 
  611. telnet for real-time keyboard-to-keyboard chats.  It's called ttylink, 
  612. and works just like telnet (for example, start a session with ttylink 
  613. <hostname>) except that it connects you directly to the remote host's 
  614. chat mode, and uses a split-screen format to make things less 
  615. confusing as you type to each other.
  616.  
  617. You'll get a message like "Telnet session 1 failed: Reset/Refused 
  618. errno 9" if the remote host doesn't support ttylink.  If the operator 
  619. at the other end isn't available to chat, you'll get a message like 
  620. "The system is unattended."  You'll still be able to type, but there 
  621. won't be anyone there to reply.  You can change the status on your 
  622. machine by setting the attended command either on or off.  You might 
  623. want to put this command in your autoexec.net file to set your default 
  624. status.  You exit from ttylink just as you would from telnet.
  625.  
  626. And now a note from Miss Manners:  you should never simply exit from 
  627. NOS when you have an open session.  Doing so can cause great 
  628. unpleasantness at the remote host.  Unless you're in some sort of 
  629. software or hardware lockup, or you know that the station on the other 
  630. end has gone away, always close sessions and wait for confirmation 
  631. before exiting the program.
  632. 
  633. You should also be aware that your system may have started sessions in 
  634. the background, for example to transfer electronic mail, or someone 
  635. else may have started a session with your system.  You may not even 
  636. know these sessions are running.  Pulling the plug on them would be 
  637. very impolite.  Before exiting NOS, you should first use the se 
  638. command to make sure there are no current sessions running, and then 
  639. the tcp status command to see if there are any background connections 
  640. established.  tcp status will show you a long and confusing list of 
  641. information; the important stuff at the end is the list of sockets 
  642. (which are services your system can either offer or request on the 
  643. network).  If anything other than Listening appears in the Status 
  644. column, that means there's at least one remote host communicating with 
  645. you.
  646.  
  647.  
  648. File Transfers
  649.  
  650. You initiate a file transfer (ftp) session by entering ftp <hostname> 
  651. at the command prompt.  Once the session is established, the remote 
  652. host will prompt you for a user name and a password.  If your hostname 
  653. and password have been added to the remote host's ftpusers file, 
  654. you'll have the ability to download and perhaps upload files in the 
  655. directories permitted you.
  656.  
  657. If you haven't arranged with the remote host for your own account, you 
  658. can try to login as anonymous or guest; many systems support these 
  659. user names and grant limited (usually download-only) privileges to 
  660. them.  If you login under one of these accounts, you should enter your 
  661. hostname as the password; that allows the remote host to keep track of 
  662. who's been using the system.
  663.  
  664. Once you've logged in, you'll see a new prompt: ftp>.  This will 
  665. remind you that you're actually issuing commands to the remote 
  666. computer.  From the ftp> prompt, you can list the files in a 
  667. directory, change directories, upload files, or download files.
  668.  
  669. To list files, enter dir at the ftp> prompt.  You will get a listing 
  670. that shows subdirectories (if any) and files together with their dates 
  671. and sizes.  To show the current directory name, type pwd.  To change 
  672. directories, issue the cd <directory> command.  Note that directories 
  673. are displayed with a forward slash (/) instead of the usual MS-DOS 
  674. backslash (\).  That's because the Unix operating system, which is 
  675. TCP/IP's natural home, uses forward slashes.  If the remote host is 
  676. running NOS, you can use either character, but some other systems 
  677. (particularly those running Unix) will recognize only the forward 
  678. slash.
  679.  
  680. Once you've found a file you want to upload or download, you need to 
  681. make a decision.  ftp can transfer the file either as an image file, 
  682. byte for byte, or as an ASCII file, converting the line-end character 
  683. as necessary to compensate for different operating systems (Unix uses 
  684. only a linefeed character at the end of lines; MS-DOS uses carriage 
  685. return/linefeed).  Before beginning a file transfer, enter either type 
  686. i for an image file, or type a for an ASCII file, at the ftp> prompt.
  687.  
  688. What are the consequences choosing the wrong type?  Well, transferring 
  689. a binary file as type a will almost certainly fail.  Transferring an 
  690. ASCII file as type i will work, but you may find that the line-ends 
  691. 
  692. are screwed up.  ASCII transfers are also quite a bit slower than 
  693. image, because each line needs to be processed separately.
  694.  
  695. To actually start a file transfer, use the command put <local 
  696. filename> <remote filename> to send a file, or get <remote filename> 
  697. <local filename> to receive one.  The file name can include a full 
  698. path if you desire; remember to use the proper path separator 
  699. character for the remote host.  If you only specify one filename, ftp 
  700. will assume that both the local and remote hosts will use the same 
  701. name.  This can be dangerous if the remote host uses a different 
  702. operating system than you do, as it may have filenames that are 
  703. illegal on your system.
  704.  
  705. If a file transfer goes awry, you can terminate it by going to command 
  706. mode via F10 and issuing the abort command.  To end an ftp session, 
  707. you can either type quit at the ftp> prompt (the preferred way), or 
  708. you can close the session from the net> prompt.
  709.  
  710. If you want others to be able to access files on your system, you'll 
  711. need to set up an ftpusers file in your root directory.  Appendix E 
  712. describes the contents of that file.
  713.  
  714. Another message from Miss Manners:  transferring files via ftp is 
  715. reliable, but can be slooooow, particularly at 1200 baud.  Before you 
  716. start downloading a 250 kilobyte file, consider how busy the channel 
  717. is, and whether you want to tie things up for (perhaps) several hours 
  718. by your download.  NOS is polite and won't hog the channel, but don't 
  719. doubt that a large file transfer will slow things down for everyone 
  720. else.
  721.  
  722.  
  723. Other Protocols
  724.  
  725. The ping protocol mentioned above is very useful to see if a remote 
  726. host is on the air.  Just enter the command ping <hostname> at the NOS 
  727. prompt.  If the host is available, you will see a response indicating 
  728. what the round-trip time was to that host.  The time may be many 
  729. seconds if you're going through gateways, so be patient.
  730.  
  731. The finger protocol lets you see information about a remote host's 
  732. users and services.  Entering finger @<hostname> (note the slightly 
  733. different syntax -- the "@" symbol must immediately precede the remote 
  734. hostname) will display a list of the users (actually, finger files as 
  735. described above) at that host.  Entering finger <user@hostname> will 
  736. display the text file for that user.
  737. 
  738. Electronic Mail
  739.  
  740. We've saved NOS's electronic mail capabilities for last because they 
  741. are a bit more involved than some other parts of the program.  You use 
  742. two programs to handle mail:  bm (a mail agent, in Unix terms) to 
  743. write and read messages, and NOS to send and receive them.  First 
  744. we'll talk about reading and writing messages, and then about using 
  745. NOS to transport them.
  746.  
  747.  
  748. Using BM.EXE to Read and Write Messages
  749.  
  750. bm.exe is a program that reads and writes mail message in the format 
  751. TCP/IP systems recognize.  Contrary to popular belief, "bm" stands for 
  752. "Bdale's Mailer" in honor of its creator, Bdale Garbee.  You can run 
  753. bm from the DOS prompt just like any other program, from within NOS by 
  754. shelling to DOS with ! or shell, or (in grinos) by typing the mail 
  755. command from the net> prompt.
  756.  
  757. Before using bm, you need to create its configuration file, bm.rc, 
  758. which must live in the root directory of your disk.  An annotated 
  759. bm.rc file is included as Appendix G.  Only the first three commands 
  760. in the sample file are absolutely necessary to make bm work.
  761.  
  762. There's a bit of controversy in some areas over the proper name to 
  763. enter for user.  Some folks recommend using either your first name, or 
  764. your initials (for example, my address would be "john@ag9v.ampr.org") 
  765. while other suggest using the callsign instead ("ag9v@ag9v.ampr.org").
  766.  
  767. While using the callsign may seem more impersonal, it has major 
  768. advantages when mail is moving between TCP/IP and the packet BBS 
  769. system, or when using the pop server; we strongly recommend that you 
  770. use the callsign@hostname format unless local objection is even 
  771. stronger.  It's important to be consistent within the area, so that 
  772. everyone knows how to address mail to everyone else.
  773.  
  774. When you start bm, you'll see a prompt such as ag9v> showing the 
  775. default mailbox (based on the user entry in bm.rc).  As in NOS, you 
  776. enter commands at the prompt, following them with a carriage return.  
  777. Most bm commands are single letters, optionally followed by a mail 
  778. addressee, or a message number (or numbers).
  779.  
  780. To send mail, use the command m <addressee>.  The addressee will 
  781. normally be a user at a remote host; for example, ag9v might send mail 
  782. to k8gkh@k8gkh.  The single biggest problem with bm is forgetting to 
  783. include the hostname -- in other words, sending mail to <user> rather 
  784. than <user>@<hostname>.   Without the hostname, bm will think the user 
  785. is on your local system, and the mail will end up being stored in a 
  786. mailbox under that user's name on your own system.  That doesn't work 
  787. too well.
  788.  
  789. One way to solve that problem, and do some other interesting things, 
  790. is to create an alias file in your root directory.  When you send a 
  791. message, bm will compare the addressee with the alias file, and if it 
  792. finds a match will replace the alias with a full address from the 
  793. file.  An alias can point to a list of addresses, so it's possible to 
  794. define an alias that will send a copy of the message to everyone in 
  795. your local group.  A sample alias file might look like:
  796. 
  797. greg    k8gkh@k8gkh.ampr.org
  798. bill    n8kza@n8kza.ampr.org
  799. club    k8gkh@k8gkh.ampr.org n8kza@n8kza.ampr.org
  800.     n8acv@n8acv.ampr.org wb8gxb@wb8gxb.ampr.org
  801.  
  802. The last alias demonstrates two things:  a single alias can expand to 
  803. several addresses, and you can continue a long address list on 
  804. subsequent lines by indenting them with spaces or a tab character.
  805.  
  806. Now, if you send mail to "greg" it will automatically be expanded to 
  807. the full address, and by sending a message to "club" all four users 
  808. will get a copy.
  809.  
  810. By the way, you do not use a trailing dot after an FQDN (as discussed 
  811. above) in email addressing; things won't work right if you do.
  812.  
  813. If you use bm's built-in editor to compose messages, remember that it 
  814. doesn't wrap lines; you have to hit the carriage return at the end of 
  815. each line.  You can list outbound mail with the l command; you can 
  816. kill an outbound message with the k <msg#> command (the message number 
  817. is obtained from the output of the l command).
  818.  
  819. Several commands are used to deal with incoming mail.  h displays the 
  820. headers (summary info) about messages in your mailbox.  It is the 
  821. basic command you should use to check your incoming mail.  Each 
  822. message header displayed will have a number to use with the other 
  823. message manipulation commands.  Commands given without a message 
  824. number act on the current message (the one displayed with a > by it in 
  825. the display from the h command; if there's only one message, it is 
  826. always the current one).
  827.  
  828. bm can support multiple users at a single host; a separate mailbox is 
  829. created for each user.  Unfortunately, bm has no way of knowing if 
  830. incoming mail addressed to <someuser>@<yourhost> is valid, so it will 
  831. happily accept such mail and create a new mailbox for <someuser>.  You 
  832. may never know it's there, unless you use the n command to display the 
  833. list of mailboxes.  You can also use n to change to a different 
  834. mailbox: n <mbox>.
  835.  
  836. The commonly used commands (which may be followed by one or more 
  837. message numbers if appropriate) are:
  838.  
  839. msg#    message number by itself will display that message and set it 
  840.         as the current message.
  841. r    reply to a message.
  842. d    delete a message.
  843. s       save a message; if a file name follows the message number(s), 
  844.         the message(s) will be saved in that file.  Otherwise, they'll 
  845.         be saved in the default mbox file.
  846. u    undelete a message previously marked for deletion.
  847. p    print a message on the local printer.
  848. w    save a message to a file without including headers.
  849. f    forward a message to another recipient.
  850. b       bounce a message.  Like forward, but keeps the original sender 
  851.         information intact (i.e., the message will not appear to have 
  852.         been sent by you).
  853. $       update the mailbox.  This deletes messages marked for deletion 
  854.         and reads in any new mail that may have arrived since you started bm.
  855. 
  856. There are two commands that exit from bm.  x will exit without 
  857. updating the mailbox.  In other words, the same messages will be there 
  858. the next time you run the program.  q updates the mailbox (like $) and 
  859. then exits.
  860.  
  861.  
  862. Moving Mail With NOS
  863.  
  864. Now, to the mechanics of getting mail into and out of your system.  
  865. All mail that you create is sent to its destination (or at least to 
  866. the next stop on the way) by the smtp server in NOS.  The smtp timer 
  867. command (set in autoexec.net) tells smtp how often to scan the 
  868. /spool/mqueue directory for outgoing mail.  When it finds some, it 
  869. attempts to open an smtp session to the remote host in the address and 
  870. send the mail there.  There's no default for the smtp timer value, so 
  871. your autoexec.net file should include something like smtp timer 600 
  872. (which scans for mail every ten minutes).  You can manually force smtp 
  873. to scan the queue by issuing the smtp kick command from the net> 
  874. prompt.  If you have a local mail server with connections to the 
  875. outside world, you can use it to route mail for hosts that aren't in 
  876. your domain file with the smtp gateway <hostid> command.
  877.  
  878. Incoming mail can arrive at your station when a remote host does this 
  879. and starts an smtp session with you.  But if you don't keep your 
  880. station up 24 hours a day, the remote host will be trying, and trying, 
  881. and trying, to connect with you until you finally show up.  A far 
  882. better approach is to use pop -- the Post Office Protocol.  If your 
  883. system runs pop, and someone in the area has agreed to be a pop 
  884. server, NOS will automatically contact that server when you come on 
  885. the air; the server will respond by sending the mail waiting in your 
  886. mailbox.  You can then read it with bm just as if it had arrived via 
  887. smtp.
  888.  
  889. To use pop, the server must establish a mailbox and password for you, 
  890. and you need to add the appropriate commands to your autoexec.net file 
  891. (see the annotated autoexec.net file in Appendix B).
  892.  
  893. Remember that smtp or pop sessions may be running in the background 
  894. without your knowing about it.  Always check for activity with the tcp 
  895. status command before pulling the plug!
  896.  
  897. Additionally, smtp creates lock files in \spool\mqueue when it tries 
  898. to send outgoing mail.  If NOS is killed before the mail transfer has 
  899. succeeded, these files (with the extension ".LCK") will be left behind 
  900. and if they are not manually removed, they will prevent smtp from 
  901. trying again to send those messages.  To prevent this, you should 
  902. always issue the command "erase \spool\mqueue\*.LCK" before starting 
  903. NOS.  It's a good idea to launch NOS using a batch file that removes 
  904. the locks before executing the program.
  905. 
  906. Conclusion
  907.  
  908. This has been a whirlwind tour of TCP/IP.  Once you have the software 
  909. installed, using it is really quite simple, and NOS truly opens the 
  910. door to using packet radio in a whole new way.
  911.  
  912. To learn the subtleties of NOS, you should do two things:  read the 
  913. reference manual for the version you're using, and experiment with the 
  914. program.  Once you know the ins and outs, please share your knowledge 
  915. with others.  The ham radio TCP/IP community is still small, and we 
  916. need all the Elmers we can get!
  917.  
  918.  
  919. John Ackermann   AG9V
  920. 2371 Stewart Road
  921. Xenia, OH   45385
  922.  
  923. TCP/IP:        ag9v.ampr.org.  [44.70.12.34]
  924. PBBS:        AG9V@N8ACV.OH.US.NA
  925. Internet:        jra@lawday.daytonOH.ncr.com
  926. CompuServe:    72300,1160
  927.  
  928. 
  929. APPENDIX A
  930. Resources for NOS and TCP/IP
  931.  
  932. (Note:  This is a very incomplete list; please feel free to provide 
  933. additional resources to add for the next edition!)
  934.  
  935. TAPR
  936. P.O. Box 22888
  937. Tucson, AZ   85734
  938.  
  939. The New England TCP Association
  940. 3628 Acushnet Ave.
  941. New Bedford, MA   02745
  942. 
  943. APPENDIX B
  944. Sample AUTOEXEC.NOS File for GRINOS
  945.  
  946. # A U T O E X E C . N E T
  947. # This is a sample autoexec file for GRINOS version N1BEE 0.72.
  948. # It doesn't have all the fancy features one might hope for, but
  949. # the basics are there, with some hopefully useful comments.
  950. # Any line beginning with a "#" character is treated as a comment.  To
  951. # uncomment a line, delete the # character
  952.  
  953. # These are a couple of things for NOS to use internally.
  954. mem eff on
  955. watchdog on
  956. nibufs 10
  957.  
  958. # NOS needs to know three things about you:  your hostname, your 
  959. # ham callsign, and your ip address.  By convention, the hostname 
  960. # is your callsign in lower case, followed by ".ampr.org".  The 
  961. # callsign is generally used in upper case to distinguish it.  The
  962. # ip address comes from a local area coordinator.  Note that there are
  963. # a minimum of three places in this file where you need to insert your IP
  964. # address -- here, in the ifconfig command, and at the end of each attach
  965. # command.
  966. hostname nocall.ampr.org
  967. ax25 mycall NOCALL
  968. ip address [44.xx.xx.xx]
  969.  
  970. # This should match your ip address
  971. ifconfig loopback ipaddress [44.xx.xx.xx]
  972.  
  973. # This makes short forms of the hostname work.
  974. domain suffix ampr.org.
  975.  
  976. # NOS needs to know how to convert hostnames to ip addresses.
  977. # You can do this manually via the "DOMAIN.TXT" file, or you can 
  978. # use a nameserver if one is available.  To enable the
  979. # nameserver, uncomment this line and plug in its correct 
  980. # address.
  981. #domain addserver [44.xx.xx.xx]
  982.  
  983. # Some additional commands for the domain service.  Don't turn translate
  984. # on unless you have a small domain file and/or a fast machine.
  985. domain verbose off
  986. domain cache size 40
  987. domain translate off
  988.  
  989. # To use POP, uncomment these lines.  Fill in "pop mailhost" with the
  990. # ip address of the station serving as your pop server.  Fill in the 
  991. # "pop mailbox" name with your hostname, i.e., your call.  The "pop 
  992. # userdata" line needs to have your hostname, followed by a password
  993. # (as negotiated with your mail server).  "pop timer" sets
  994. # how often, in seconds, to query for mail.
  995. #pop mailhost [44.xx.xx.xx]
  996. #pop mailbox hostname
  997. #pop userdata hostname password
  998. #pop timer 1800
  999. 
  1000. # Attach commands are complex; these are samples for COM 1
  1001. # and 2.  See Appendix C for details.  Uncomment the
  1002. # appropriate line(s) for your hardware.
  1003. # COM1 -- 256 byte MTU, 4800 baud serial link as ax0
  1004. attach asy 0x3f8 4 ax25 ax0 2048 256 4800
  1005. # COM2 -- 256 byte MTU, 4800 baud serial link as ax1
  1006. #attach asy 0x2f8 3 ax25 ax1 2048 256 4800
  1007.  
  1008. # This is the basic route, sending everything out ax0 
  1009. route add default ax0 
  1010.  
  1011. # These are tcp parameters you shouldn't need to mess with.
  1012. ip ttl 16
  1013. ip rtimer 240
  1014. tcp irtt 3000
  1015.  
  1016. # On a shared channel, you may want to change timertype to
  1017. # exponential; that's more courteous, but will slow your 
  1018. # retries down significantly.  mss and window should ordinarily be the 
  1019. # same value, equal to the largest mtu set in the attach command(s) above 
  1020. # minus 40.  With the common mtu for 1200 baud channels of 256, that means
  1021. # both mss and window should be 216.
  1022. tcp timertype linear
  1023. tcp bblimit 16
  1024. tcp mss 216 
  1025. tcp window 216
  1026.  
  1027. # These set up AX.25 parameters
  1028. ax25 digipeat off
  1029. ax25 maxframe 1
  1030. ax25 paclen 256
  1031. ax25 retry 20
  1032. ax25 window 4096
  1033. ax25 blimit 15
  1034. ax25 version 2
  1035.  
  1036. # as with tcp timertype, you may want to set this to 
  1037. # exponential on a shared channel.
  1038. ax25 timertype linear
  1039.  
  1040. # These are netrom setup commands.  Don't turn them on 
  1041. # unless you need them, and you know what you're doing.  You
  1042. # can really screw up the network by putting out netrom 
  1043. # broadcasts that don't fit with the configuration of the 
  1044. # "real" netrom nodes that can hear you.
  1045. #attach netrom
  1046. #netrom interface ax0 MYALIAS 192
  1047. #netrom obsotimer 1800
  1048. #netrom nodetimer 10800
  1049. #netrom verbose yes
  1050. #netrom bcnodes ax0
  1051. #netrom ttl 8
  1052. 
  1053. # These start the servers.
  1054. start smtp
  1055. start ftp
  1056. start echo
  1057. start discard
  1058. start telnet
  1059. start finger
  1060.  
  1061. # Uncomment this line to enable logging.
  1062. #log \spool\net.log
  1063.  
  1064. # Default file type for ftp transfers.  Type image is for binary 
  1065. # files; type ascii is for text; it's safest to set the default to image.
  1066. ftype image
  1067.  
  1068. # This makes telnet sessions to Unix systems work
  1069. # line-by-line, rather than character-by-character.
  1070. echo refuse
  1071.  
  1072. # Tell smtp how often to scan for outgoing mail
  1073. smtp timer 600
  1074. smtp batch on 
  1075.  
  1076. # grinos can send a string of commands to the TNC on startup.  You 
  1077. # could use this to force the TNC into KISS mode.  Note that you need to 
  1078. # specify which interface to use.  This must be done <after> defining the 
  1079. # interface and <before>any data is sent to the TNC (for example, by the
  1080. # smtp and pop kick commands below) These commands will do that for a TNC2:
  1081. #comm ax0 "kiss on"
  1082. #comm ax0 "reset"
  1083.  
  1084. # kick the smtp and pop servers at startup.  Only uncomment the "pop
  1085. # kick" line if you've defined a pop server above.
  1086. smtp kick
  1087. #pop kick
  1088.  
  1089. # GRINOS (but not other versions) can define the function 
  1090. # keys with macros to make things a bit easier.  Here are a 
  1091. # couple of examples.  Note that each command must end with 
  1092. # a "\n" to signify a carriage return.  The numbers 
  1093. # represent the keys; 59 - 68 for F1- F10 (though F10 can't
  1094. # be redefined; it's always the escape key), 84 - 93 for 
  1095. # shiftF1 - shift F10, 94 - 103 for ctrlF1 - ctrlF10, 104 -
  1096. # 113 for altF1 - altF10.
  1097. fkey 59 "tcp status\n"
  1098. fkey 60 "mem status\n"
  1099. fkey 61 "status\n"
  1100.  
  1101. # THE END
  1102. 
  1103. APPENDIX C
  1104. Designing ATTACH Commands
  1105.  
  1106. NOS supports a number of versions of the attach command to deal with 
  1107. different hardware.  We'll discuss three of them here:  asy, used for 
  1108. serial port connections; pi, used to connect to the Ottawa PI card; 
  1109. and packet, used to interface to hardware supporting the FTP, Inc., 
  1110. packet driver protocol.  As usual, this discussion covers the basics; 
  1111. see the NOS reference manual for details on all the many options.
  1112.  
  1113. Hosts normally have a separate ip address for each interface.  If you 
  1114. are running more than one interface, you can include that interface's 
  1115. ip address (in [xx.xx.xx.xx] form) at the end of the attach command.
  1116.  
  1117. The asy version provides an interface to a standard PC serial port.  
  1118. The syntax is:
  1119.  
  1120. attach asy <ioaddr> <vector> <mode> <if> <bufsize> <mtu> <speed>
  1121.  
  1122. In English, these parameters are:
  1123.  
  1124. ioaddr -- the address of the COM port being used.  COM1 is 
  1125. usually 0x3f8 and COM2 is usually 0x2f8.  COM3 and COM4 aren't 
  1126. standardized; using them will require looking at the documentation
  1127. for your serial card, and probably some experimentation.
  1128.  
  1129. vector -- the IRQ used by the hardware.  COM1 is usually 4, 
  1130. and COM2 is usually 3.  Again, COM3 and COM4 vary.
  1131.  
  1132. mode -- this specifies the nature of the interface.  ax25 is 
  1133. for a connection to a KISS TNC, slip for a hardwired 
  1134. connection to another host, ppp for a dial-up connection, and 
  1135. nrs is for attaching a NOS station to a NetRom node.
  1136.  
  1137. if -- the interface name.  The convention is to use ax0, ax1, 
  1138. etc., for KISS interfaces.
  1139.  
  1140. bufsize -- the buffer for incoming data, in bytes.  Usually a 
  1141. value of 1024 is more than sufficient for a 1200 baud channel.
  1142.  
  1143. mtu -- the maximum transmission unit size, in bytes.  See the 
  1144. discussion in the main text on this subject.
  1145.  
  1146. speed -- the speed of the serial (not radio) link, in baud.  
  1147. The best setting for this will depend on the speed of your 
  1148. computer, but generally two to four times the radio speed is 
  1149. adequate.
  1150.  
  1151. Some sample attach asy commands are:
  1152.  
  1153.     # COM1, KISS TNC as ax0, MTU 256, 4800 BAUD
  1154.     attach asy 0x3f8 4 ax25 ax0 1024 256 4800
  1155.  
  1156.     # COM2, KISS TNC as ax1, MTU 256, 2400 BAUD
  1157.     attach asy 0x2f8 3 ax25 ax1 1024 256 2400
  1158.  
  1159.     # SLIP link, COM1 as sl0, MTU 256, 9600 BAUD
  1160.     attach asy 0x3f8 4 slip sl0 1024 256 9600
  1161. 
  1162. The Ottawa PI card is a plug-in board for PCs designed for high-speed 
  1163. performance.  It has two ports, one DMA driven for high speed and the 
  1164. other interrupt driven.  The attach syntax is:
  1165.  
  1166. attach pi <ioaddr> <vector> <DMA chn> <mode> <name> <bufsize> <mtu> 
  1167. <speed a> <speed b>
  1168.  
  1169. A sample attach command (using the PI's default jumper settings) is:
  1170.  
  1171. attach pi 380 7 1 ax25 pi0 1750 1024 0 1200
  1172.  
  1173. In this example, the interface name for the DMA port is "pi0a" and the 
  1174. second port is "pi0b".  Because the port a speed is 0, the PI card 
  1175. expects the modem to provide its own clocking.  The PI attach syntax 
  1176. is explained in the manual provided with the card.
  1177.  
  1178. Finally, the packet interface is used to connect to ethernet cards and 
  1179. other hardware that supports the FTP, Inc. "packet driver" standard.  
  1180. There's a packet driver for the PI card.  The syntax is:
  1181.  
  1182. attach packet <ioaddr> <vector> <if> <bufsize> <mtu>
  1183.  
  1184. In this case, ioaddr and vector need to match those used for the 
  1185. packet TSR that supports the hardware.  bufsize is the number of 
  1186. packets (not bytes) that may be outstanding.  For ethernet, the 
  1187. standard mtu is 1500.
  1188.  
  1189. Although most of the attach commands support the inclusion of an ip address
  1190. unique to that interface, we've noticed that some (particularly the packet
  1191. driver) don't work.  If you need to assign an address to an interface, you can
  1192. use the following command <after> the attach statement:
  1193.  
  1194. ifconfig <name> ipaddr [xx.xx.xx.xx]
  1195. 
  1196. APPENDIX D
  1197. The DOMAIN.TXT File
  1198.  
  1199.  
  1200. # The domain.txt file contains mappings between hostnames 
  1201. # and ip addresses.  The file can be quite complex, but 
  1202. # basic entries usually resemble this.
  1203.  
  1204. # Fields are separated by tabs or spaces.
  1205.  
  1206. # These are normal address records.  The first field is the 
  1207. # hostname.  The second field is a "time to  live" value 
  1208. # returned by the name server.  If you manually create an 
  1209. # entry, you can leave this field  blank.  The third field 
  1210. # is always "IN" to signify these are internet addresses.  
  1211. # The fourth field is "A" to signify an address record.  The
  1212. # last field is the address.
  1213.  
  1214. k8gkh.ampr.org.    3599886    IN    A    44.70.12.31
  1215. ag9v.ampr.org.    3585524    IN    A    44.70.12.34
  1216.  
  1217. # This is a "canonical name" (CNAME) record that maps an 
  1218. # alias to an official hostname.
  1219.  
  1220. server.ampr.org.    3599886    IN    CNAME    ag9v.ampr.org.
  1221. 
  1222. APPENDIX E
  1223. Sample FTPUSERS File
  1224.  
  1225. # This file establishes ftp user permissions.  Fields are 
  1226. # separated by exactly one space.  The privileges value is a 
  1227. # bitmask.  The only values significant for ftp are:
  1228.  
  1229. # 1 - read only
  1230. # 3 - read/write
  1231. # 7 - read/write/overwrite/delete
  1232.  
  1233.  
  1234. anonymous * /pub 1        # no password, read only in /pub
  1235. friend foobar /pub 3        # read/write privileges in /pub
  1236. spouse snoogums / 7        # read/write/delete everywhere
  1237. 
  1238. APPENDIX F
  1239. Making Your TNC Talk in KISS MODE
  1240.  
  1241. Once NOS is installed and your configuration files set, you need to do 
  1242. one more thing:  get your TNC talking to your computer in KISS (Keep 
  1243. It Simple, Stupid) mode.  KISS is a special protocol that lets your 
  1244. computer do the work of processing packets; the TNC does only the very 
  1245. low-level packet assembly and disassembly functions.  Nearly all TNCs 
  1246. support KISS in one way or another.
  1247.  
  1248. Typically, you'll need to issue commands to the TNC to set the serial 
  1249. line baud rate to the same speed as you've specified in the attach 
  1250. command, to 8 bit data, and to no parity.  Then, issue the KISS 
  1251. command (on a TNC2, kiss on), and the TNC's software reset command.  
  1252. After that, you won't be able to talk to your TNC via the terminal 
  1253. program, but NOS will be able to.  (And don't worry, you can easily 
  1254. return the TNC to normal mode if you want to.)  Once you've done this, 
  1255. you're set to run NOS.
  1256.  
  1257. One trick that grinos supports is the ability to send commands to the 
  1258. TNC during startup.  The comm command will send a string of text to 
  1259. the named interface.  For example, to force a Kantronics DataEngine or 
  1260. KAM into KISS mode every time you start NOS, include the following 
  1261. commands in autoexec.nos (after you've defined the interface with the 
  1262. attach command):
  1263.  
  1264. comm ax0 "interface kiss"
  1265. comm ax0 "reset"
  1266.  
  1267. Note that surrounding the text with double quote characters will 
  1268. preserve spaces in the command.
  1269. 
  1270. Appendix G
  1271. A Sample BM.RC File
  1272.  
  1273.  
  1274. # bm.rc
  1275. # your hostname -- note that for mail we <don't> put a trailing period 
  1276. # at the end of the FQDN.
  1277. host ag9v.ampr.org
  1278.  
  1279. # the user name (one host can receive mail for several users); usually
  1280. # your callsign
  1281. user ag9v
  1282.  
  1283. # your full name, for the message "From:" line
  1284. fullname John Ackermann
  1285.  
  1286. # if you want to have replies sent to another host, because, for 
  1287. # example, you are using a pop server, this line specifies where replies
  1288. # should go
  1289. reply ag9v@ag9v.ampr.org
  1290.  
  1291. # for faster screen writes on the pc, use direct video, not bios
  1292. screen direct
  1293.  
  1294. # if you want to use an editor different than bm's built-in one
  1295. edit ed
  1296.  
  1297. # put saved messages here; note "/" instead of "\"
  1298. mbox c:/folder/mbox
  1299.  
  1300. # save a copy of outbound mail here
  1301. record c:/folder/outmail
  1302.  
  1303. # folder for your mail
  1304. folder c:/folder
  1305.  
  1306. # maximum number of messages that can be pending
  1307. maxlet 200
  1308.  
  1309.